package com.yfp.operation.service;

import com.github.binarywang.wxpay.exception.WxPayException;
import com.yfp.operation.domain.UserWithdraw;
import com.yfp.operation.domain.dto.UserWithdrawCheckDTO;
import com.yfp.operation.domain.dto.UserWithdrawRequestDTO;
import com.yfp.operation.domain.dto.UserWithdrawResponseDTO;
import com.yfp.operation.domain.dto.UserWithdrawResponseInfoDTO;

import java.util.List;

/**
 * @Description: 用户提现账单
 *
 * @CreateDate: 2024/5/28 14:19
 * @UpdateUser:
 * @UpdateDate: 2024/5/28 14:19
 * @UpdateRemark: 暂无修改
 * @Version: 1.0
 */
public interface UserWithdrawService {

    /**
     * 新增用户提现
     *
     * @param userWithdraw
     */
    void add(UserWithdraw userWithdraw);

    /**
     * 修改用户提现
     *
     * @param userWithdraw
     */
    void edit(UserWithdraw userWithdraw);

    /**
     * 获取当前登录用户提现列表
     *
     * @return
     */
    List<UserWithdraw> getAccountWithdraw();

    /**
     * 当前登录账号提现
     */
    void accountWithdraw();

    /**
     * 生成账号提现编号
     *
     * @return
     */
    String getWithdrawSn(Long userId);

    /**
     * 获取提现管理列表
     *
     * @return
     */
    List<UserWithdrawResponseDTO> getManagementWithdrawList(UserWithdrawRequestDTO requestDTO);

    /**
     * 获取提现管理详情
     *
     * @param userWithdrawId 用户提现账单id
     * @return
     */
    List<UserWithdrawResponseInfoDTO> getManagementWithdrawInfo(Long userWithdrawId);

    /**
     * 提现管理审核
     *
     * @param userWithdrawCheckDTO
     */
    void managementWithdrawCheck(UserWithdrawCheckDTO userWithdrawCheckDTO) throws WxPayException;

    /**
     * 测试分账
     *
     * @param orderSn
     */
    void profitSharingByOrderSn(String orderSn);

    /**
     * 服务商提现
     */
    void providerWithdraw();
}
